home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Games of Daze
/
Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso
/
x2ftp
/
msdos
/
iguana
/
bla2src
/
getfont.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1994-02-10
|
2KB
|
114 lines
TYPE
TScr = ARRAY [0..199,0..319] OF BYTE;
VAR
s : ^TScr;
fi : FILE OF TScr;
Let : ARRAY [0..23,0..23] OF BYTE;
ncol, nLet, llen : INTEGER;
adr : INTEGER;
i : INTEGER;
starts : ARRAY [0..100] OF WORD;
lens : ARRAY [0..100] OF WORD;
FUNCTION IsColEmpty: BOOLEAN;
VAR
j : INTEGER;
BEGIN
j := 0;
WHILE (s^[1+i*24+j, ncol] = 0) AND (j < 23) DO
INC(j);
IsColEmpty := (j >= 23)
END;
CONST
LastCol : BYTE = 0;
LCount : INTEGER = 0;
PROCEDURE DumpCol;
CONST
LastCol : BYTE = 0;
LCount : INTEGER = 0;
VAR
j : INTEGER;
BEGIN
{
Write(' DB '); (* Un pixel por byte. *)
FOR j := 1 TO 23 DO BEGIN
Write (s^[i*24+j, ncol]);
IF j < 23 THEN
Write(',')
END;
INC(adr, 23);
WriteLn
}
Write(' DB '); (* Dos pixels por byte. *)
FOR j := 0 TO 11 DO BEGIN
Write (s^[i*24+2*j, ncol]*16 + s^[i*24+2*j+1, ncol]);
IF j < 11 THEN
Write(',')
END;
INC(adr, 12);
WriteLn
{ FOR j := 1 TO 23 DO BEGIN (* Comprimiendo ristras. *)
IF s^[i*24+j, ncol] = (LastCol AND 7) THEN
INC(LastCol,8)
ELSE BEGIN
Write (LastCol);
LastCol := s^[i*24+j, ncol];
IF LCount < 23 THEN BEGIN
INC(LCount);
Write(',')
END ELSE BEGIN
LCount := 0;
WriteLn;
Write('DB ')
END
END
END;
INC(adr, 23);
}
END;
BEGIN
NEW(s);
Assign(fi, 'Fuente1.Pix');
Reset(fi);
Read(fi, s^);
Close(fi);
WriteLn('FontData LABEL BYTE');
adr := 0;
nLet := 0;
FOR i := 0 TO 3 DO BEGIN
ncol := 0;
WHILE ncol < 320 DO BEGIN
IF IsColEmpty THEN
INC(ncol)
ELSE BEGIN
starts[nLet] := adr;
llen := 0;
REPEAT
DumpCol;
INC(llen);
INC(ncol)
UNTIL (llen >= 24) OR (ncol >= 320) OR IsColEmpty;
lens[nLet] := llen;
INC(nLet)
END
END
END;
WriteLn;
WriteLn('FontTable LABEL BYTE');
FOR i := 0 TO nLet-1 DO
WriteLn(' DB ', lens[i]:2{, ', OFFSET FontData+', starts[i]:5})
END.